<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
		<head>
			<!-- template designed by Marco Von Ballmoos -->
			<title>File Source for TpParser.php</title>
			<link rel="stylesheet" href="../media/stylesheet.css" />
			<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
		</head>
		<body>
						<h1>Source for file TpParser.php</h1>
<p>Documentation is available at <a href="../TurboPhpLib/_TpParser_php.html">TpParser.php</a></p>
<div class="src-code">
<pre><ol><li><a name="a1"></a><span class="src-php">&lt;?php</span></li>
<li><a name="a2"></a>&nbsp;</li>
<li><a name="a3"></a><span class="src-doc">/**</span></li>
<li><a name="a4"></a><span class="src-doc"> *  TurboPhp - TpParser</span></li>
<li><a name="a5"></a><span class="src-doc"> *  Version 4.1 Beta</span></li>
<li><a name="a6"></a><span class="src-doc"> *</span></li>
<li><a name="a7"></a><span class="src-doc"> *  Copyright (c) 2004-2005 Least-Resistance Software</span></li>
<li><a name="a8"></a><span class="src-doc"> *</span></li>
<li><a name="a9"></a><span class="src-doc"> *  This source file is subject to the terms of the TurboPhp license,</span></li>
<li><a name="a10"></a><span class="src-doc"> *  that is bundled with this package in the file LICENSE.TXT, and is</span></li>
<li><a name="a11"></a><span class="src-doc"> *  available at through the world-wide-web at</span></li>
<li><a name="a12"></a><span class="src-doc"> *  http://www.turbophp.com/turbophp/license.txt</span></li>
<li><a name="a13"></a><span class="src-doc"> *</span></li>
<li><a name="a14"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@package</span><span class="src-doc"> TurboPhpLib</span></li>
<li><a name="a15"></a><span class="src-doc"> */</span></li>
<li><a name="a16"></a>&nbsp;</li>
<li><a name="a17"></a><span class="src-doc-template">/**#@+</span></li>
<li><a name="a18"></a><span class="src-doc-template"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc-template"> private</span></li>
<li><a name="a19"></a><span class="src-doc-template"> */</span></li>
<li><a name="a20"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'P_WS'</span><span class="src-sym">, </span><span class="src-str">'\s*'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a21"></a>&nbsp;</li>
<li><a name="a22"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'P_SLASH'</span><span class="src-sym">, </span><span class="src-str">'(/*)'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a23"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'P_TOKEN'</span><span class="src-sym">, </span><span class="src-str">'([^\s]*)'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a24"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'P_ATTRS'</span><span class="src-sym">, </span><span class="src-str">'(.*)'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a25"></a>&nbsp;</li>
<li><a name="a26"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'P_TAG'</span><span class="src-sym">, </span><span class="src-str">'#'</span>. <span class="src-id">P_SLASH </span>. <span class="src-id">P_TOKEN </span>. <span class="src-id">P_WS </span>. <span class="src-id">P_ATTRS </span>. <span class="src-str">'#sm'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a27"></a>&nbsp;</li>
<li><a name="a28"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'P_ANAME'</span><span class="src-sym">, </span><span class="src-str">'[^=\s]*'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a29"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'P_VALUE'</span><span class="src-sym">, </span><span class="src-str">'[^&quot;\s&gt;]*'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a30"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'P_QVALUE'</span><span class="src-sym">, </span><span class="src-str">'(?:&quot;)([^&quot;]*)(?:&quot;)'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a31"></a>&nbsp;</li>
<li><a name="a32"></a><a href="http://www.php.net/define">define</a><span class="src-sym">(</span><span class="src-str">'P_ATTR'</span><span class="src-sym">, </span><span class="src-str">'/'</span>.<span class="src-id">P_WS</span>.<span class="src-str">'('</span>.<span class="src-id">P_ANAME</span>.<span class="src-str">')'</span>.<span class="src-id">P_WS</span>.<span class="src-str">'='</span>.<span class="src-id">P_WS</span>.<span class="src-str">'('</span>.<span class="src-id">P_QVALUE</span>.<span class="src-str">'|'</span>.<span class="src-id">P_VALUE</span>.<span class="src-str">')/'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a36"></a><span class="src-doc-close-template">/**#@-*/</span><span class="src-comm"> * @access private</span></li>
<li><a name="a37"></a><span class="src-comm"> */</span></li>
<li><a name="a38"></a><span class="src-key">function </span><span class="src-sym">&amp;</span><span class="src-id">TpExtractAttrs</span><span class="src-sym">(</span><span class="src-sym">&amp;</span><span class="src-var">$inAttrs</span><span class="src-sym">)</span></li>
<li><a name="a39"></a><span class="src-sym">{</span></li>
<li><a name="a40"></a>  <span class="src-var">$result </span>= <span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a41"></a>  <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/preg_match_all">preg_match_all</a><span class="src-sym">(</span><span class="src-id">P_ATTR</span><span class="src-sym">, </span><span class="src-var">$inAttrs</span><span class="src-sym">, </span><span class="src-var">$matches</span><span class="src-sym">, </span><span class="src-id">PREG_SET_ORDER</span><span class="src-sym">))</span></li>
<li><a name="a42"></a>  <span class="src-sym">{</span></li>
<li><a name="a43"></a>    <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$matches </span><span class="src-key">as </span><span class="src-var">$match</span><span class="src-sym">)</span></li>
<li><a name="a44"></a>    <span class="src-sym">{</span></li>
<li><a name="a45"></a>      <span class="src-var">$name </span>= <span class="src-var">$match</span><span class="src-sym">[</span><span class="src-num">1</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a46"></a>      <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$match</span><span class="src-sym">) </span>&gt; <span class="src-num">3</span><span class="src-sym">)</span></li>
<li><a name="a47"></a>        <span class="src-var">$value </span>= <span class="src-var">$match</span><span class="src-sym">[</span><span class="src-num">3</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a48"></a>      <span class="src-key">else</span></li>
<li><a name="a49"></a>        <span class="src-var">$value </span>= <span class="src-var">$match</span><span class="src-sym">[</span><span class="src-num">2</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a50"></a>      <span class="src-var">$result</span><span class="src-sym">[</span><span class="src-var">$name</span><span class="src-sym">] </span>= <span class="src-var">$value</span><span class="src-sym">;</span></li>
<li><a name="a51"></a>    <span class="src-sym">}</span></li>
<li><a name="a52"></a>  <span class="src-sym">}</span></li>
<li><a name="a53"></a>  <span class="src-key">return </span><span class="src-var">$result</span><span class="src-sym">;</span></li>
<li><a name="a54"></a><span class="src-sym">}</span></li>
<li><a name="a55"></a>&nbsp;</li>
<li><a name="a56"></a><span class="src-doc">/**</span></li>
<li><a name="a57"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a58"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@package</span><span class="src-doc"> TurboPhpLib</span></li>
<li><a name="a59"></a><span class="src-doc"> */</span></li>
<li><a name="a60"></a><span class="src-key">class </span><span class="src-id">TTpTag</span></li>
<li><a name="a61"></a><span class="src-sym">{</span></li>
<li><a name="a62"></a>  <span class="src-key">var </span><span class="src-var">$Attributes</span><span class="src-sym">;</span></li>
<li><a name="a63"></a>  <span class="src-key">var </span><span class="src-var">$Markup</span><span class="src-sym">;</span></li>
<li><a name="a64"></a>  <span class="src-key">var </span><span class="src-var">$Element</span><span class="src-sym">;</span></li>
<li><a name="a65"></a>  <span class="src-key">var </span><span class="src-var">$EndTag</span><span class="src-sym">;</span></li>
<li><a name="a66"></a>  <span class="src-key">var </span><span class="src-var">$IsEnd</span><span class="src-sym">;</span></li>
<li><a name="a67"></a>  <span class="src-key">var </span><span class="src-var">$Level</span><span class="src-sym">;</span></li>
<li><a name="a68"></a>  <span class="src-key">var </span><span class="src-var">$Pre</span><span class="src-sym">;</span></li>
<li><a name="a69"></a>  <span class="src-key">var </span><span class="src-var">$RawAttrs</span><span class="src-sym">;</span></li>
<li><a name="a70"></a>  <span class="src-key">var </span><span class="src-var">$Tags</span><span class="src-sym">;</span></li>
<li><a name="a71"></a>  <span class="src-doc">/**</span></li>
<li><a name="a72"></a><span class="src-doc">   * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a73"></a><span class="src-doc">   */</span></li>
<li><a name="a74"></a>  <span class="src-key">function </span><span class="src-id">TTpTag</span><span class="src-sym">(</span><span class="src-sym">)</span></li>
<li><a name="a75"></a>  <span class="src-sym">{</span></li>
<li><a name="a76"></a>    <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">Init</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a77"></a>  <span class="src-sym">}</span></li>
<li><a name="a78"></a>  <span class="src-doc">/**</span></li>
<li><a name="a79"></a><span class="src-doc">   * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a80"></a><span class="src-doc">   */</span></li>
<li><a name="a81"></a>  <span class="src-key">function </span><span class="src-id">Init</span><span class="src-sym">(</span><span class="src-sym">)</span></li>
<li><a name="a82"></a>  <span class="src-sym">{</span></li>
<li><a name="a83"></a>    <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Attributes </span>= <span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a84"></a>    <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Level </span>= <span class="src-num">0</span><span class="src-sym">;</span></li>
<li><a name="a85"></a>    <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Tags </span>= <span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a86"></a>  <span class="src-sym">}</span></li>
<li><a name="a87"></a>  <span class="src-doc">/**</span></li>
<li><a name="a88"></a><span class="src-doc">   * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a89"></a><span class="src-doc">   */</span></li>
<li><a name="a90"></a>  <span class="src-key">function </span><span class="src-id">EachTagDo</span><span class="src-sym">(</span><span class="src-var">$inMethod</span><span class="src-sym">)</span></li>
<li><a name="a91"></a>  <span class="src-sym">{</span></li>
<li><a name="a92"></a>    <span class="src-key">for </span><span class="src-sym">(</span><span class="src-var">$i </span>= <span class="src-num">0</span><span class="src-sym">; </span><span class="src-var">$i </span>&lt; <a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Tags</span><span class="src-sym">)</span><span class="src-sym">; </span><span class="src-var">$i</span>++<span class="src-sym">)</span></li>
<li><a name="a93"></a>      <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Tags</span><span class="src-sym">[</span><span class="src-var">$i</span><span class="src-sym">]</span><span class="src-sym">-&gt;</span><span class="src-var">$inMethod</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a94"></a>  <span class="src-sym">}</span></li>
<li><a name="a95"></a>  <span class="src-doc">/**</span></li>
<li><a name="a96"></a><span class="src-doc">   * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a97"></a><span class="src-doc">   */</span></li>
<li><a name="a98"></a>  <span class="src-key">function </span><span class="src-id">Parse</span><span class="src-sym">(</span><span class="src-sym">)</span></li>
<li><a name="a99"></a>  <span class="src-sym">{</span></li>
<li><a name="a100"></a>    <span class="src-comm">//echo &quot;Parsing Markup: [$this-&gt;Markup]&lt;br&gt;&quot;;</span></li>
<li><a name="a101"></a>    <a href="http://www.php.net/preg_match">preg_match</a><span class="src-sym">(</span><span class="src-id">P_TAG</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Markup</span><span class="src-sym">, </span><span class="src-var">$matches</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a102"></a>    <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$matches</span><span class="src-sym">) </span>&gt; <span class="src-num">1</span><span class="src-sym">)</span></li>
<li><a name="a103"></a>    <span class="src-sym">{</span></li>
<li><a name="a104"></a>      <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">IsEnd </span>= <span class="src-sym">(</span><span class="src-var">$matches</span><span class="src-sym">[</span><span class="src-num">1</span><span class="src-sym">] </span>&lt;&gt; <span class="src-str">''</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a105"></a>      <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Element </span>= <a href="http://www.php.net/strtolower">strtolower</a><span class="src-sym">(</span><span class="src-var">$matches</span><span class="src-sym">[</span><span class="src-num">2</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a106"></a>      <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">RawAttrs </span>= <span class="src-var">$matches</span><span class="src-sym">[</span><span class="src-num">3</span><span class="src-sym">] </span>. <span class="src-sym">(</span><a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$matches</span><span class="src-sym">) </span>&lt; <span class="src-num">4 </span>? <span class="src-var">$matches</span><span class="src-sym">[</span><span class="src-num">4</span><span class="src-sym">] </span>: <span class="src-str">''</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a107"></a>      <span class="src-comm">//$this-&gt;ParseAttrs($this-&gt;RawAttrs);</span></li>
<li><a name="a108"></a>    <span class="src-sym">}</span></li>
<li><a name="a109"></a>  <span class="src-sym">}</span></li>
<li><a name="a110"></a>  <span class="src-doc">/**</span></li>
<li><a name="a111"></a><span class="src-doc">   * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a112"></a><span class="src-doc">   */</span></li>
<li><a name="a113"></a>  <span class="src-key">function </span><span class="src-id">ExtractAttr</span><span class="src-sym">(</span><span class="src-var">$matches</span><span class="src-sym">)</span></li>
<li><a name="a114"></a>  <span class="src-sym">{</span></li>
<li><a name="a115"></a>    <span class="src-var">$c </span>= <a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$matches</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a116"></a>    <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$c </span>&gt; <span class="src-num">1</span><span class="src-sym">)</span></li>
<li><a name="a117"></a>    <span class="src-sym">{</span></li>
<li><a name="a118"></a>      <span class="src-var">$name </span>= <span class="src-var">$matches</span><span class="src-sym">[</span><span class="src-num">1</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a119"></a>      <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$c </span>&gt; <span class="src-num">3</span><span class="src-sym">)</span></li>
<li><a name="a120"></a>        <span class="src-var">$value </span>= <span class="src-var">$matches</span><span class="src-sym">[</span><span class="src-num">3</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a121"></a>      <span class="src-key">else </span><span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$c </span>&gt; <span class="src-num">2</span><span class="src-sym">)</span></li>
<li><a name="a122"></a>        <span class="src-var">$value </span>= <span class="src-var">$matches</span><span class="src-sym">[</span><span class="src-num">2</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a123"></a>      <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Attributes</span><span class="src-sym">[</span><span class="src-var">$name</span><span class="src-sym">] </span>= <span class="src-var">$value</span><span class="src-sym">;</span></li>
<li><a name="a124"></a>      <span class="src-key">return </span><span class="src-str">''</span><span class="src-sym">;</span></li>
<li><a name="a125"></a>    <span class="src-sym">}</span></li>
<li><a name="a126"></a>    <span class="src-key">return </span><span class="src-var">$matches</span><span class="src-sym">[</span><span class="src-num">0</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a127"></a>  <span class="src-sym">}</span></li>
<li><a name="a128"></a>  <span class="src-doc">/**</span></li>
<li><a name="a129"></a><span class="src-doc">   * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a130"></a><span class="src-doc">   */</span></li>
<li><a name="a131"></a>  <span class="src-key">function </span><span class="src-id">ExtractAttrs</span><span class="src-sym">(</span><span class="src-sym">&amp;</span><span class="src-var">$inAttrs</span><span class="src-sym">)</span></li>
<li><a name="a132"></a>  <span class="src-sym">{</span></li>
<li><a name="a133"></a>    <span class="src-key">return </span><a href="http://www.php.net/preg_replace_callback">preg_replace_callback</a><span class="src-sym">(</span><span class="src-id">P_ATTR</span><span class="src-sym">, </span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">&amp;</span><span class="src-var">$this</span><span class="src-sym">, </span><span class="src-str">'ExtractAttr'</span><span class="src-sym">)</span><span class="src-sym">,</span></li>
<li><a name="a134"></a>      <span class="src-var">$inAttrs</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a135"></a>  <span class="src-sym">}</span></li>
<li><a name="a136"></a>  <span class="src-doc">/**</span></li>
<li><a name="a137"></a><span class="src-doc">   * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a138"></a><span class="src-doc">   */</span></li>
<li><a name="a139"></a>  <span class="src-key">function </span><span class="src-id">ParseAttrs</span><span class="src-sym">(</span><span class="src-sym">&amp;</span><span class="src-var">$inRawAttrs</span><span class="src-sym">)</span></li>
<li><a name="a140"></a>  <span class="src-sym">{</span></li>
<li><a name="a141"></a>    <span class="src-var">$inRawAttrs </span>= <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">ExtractAttrs</span><span class="src-sym">(</span><span class="src-var">$inRawAttrs</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a142"></a>    <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$inRawAttrs</span><span class="src-sym">)</span></li>
<li><a name="a143"></a>      <span class="src-var">$inRawAttrs </span>= <span class="src-str">' ' </span>. <a href="http://www.php.net/trim">trim</a><span class="src-sym">(</span><span class="src-var">$inRawAttrs</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a144"></a>  <span class="src-sym">}</span></li>
<li><a name="a145"></a>  <span class="src-doc">/**</span></li>
<li><a name="a146"></a><span class="src-doc">   * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a147"></a><span class="src-doc">   */</span></li>
<li><a name="a148"></a>  <span class="src-key">function </span><span class="src-id">GetHtmlAttrs</span><span class="src-sym">(</span><span class="src-sym">)</span></li>
<li><a name="a149"></a>  <span class="src-sym">{</span></li>
<li><a name="a150"></a>    <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">RawAttrs</span><span class="src-sym">)</span></li>
<li><a name="a151"></a>      <span class="src-key">return </span><span class="src-str">' ' </span>. <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">RawAttrs</span><span class="src-sym">;</span></li>
<li><a name="a152"></a>    <span class="src-key">else</span></li>
<li><a name="a153"></a>      <span class="src-key">return </span><span class="src-str">''</span><span class="src-sym">;</span></li>
<li><a name="a154"></a>  <span class="src-sym">}</span></li>
<li><a name="a155"></a>  <span class="src-doc">/**</span></li>
<li><a name="a156"></a><span class="src-doc">   * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a157"></a><span class="src-doc">   */</span></li>
<li><a name="a158"></a>  <span class="src-key">function </span><span class="src-id">GetStartTag</span><span class="src-sym">(</span><span class="src-sym">)</span></li>
<li><a name="a159"></a>  <span class="src-sym">{</span></li>
<li><a name="a160"></a>    <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Markup</span><span class="src-sym">)</span></li>
<li><a name="a161"></a>      <span class="src-key">return </span><span class="src-str">'&lt;' </span>. <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Markup </span>. <span class="src-str">'&gt;'</span><span class="src-sym">;</span></li>
<li><a name="a162"></a>    <span class="src-key">else</span></li>
<li><a name="a163"></a>      <span class="src-key">return </span><span class="src-str">''</span><span class="src-sym">;</span></li>
<li><a name="a164"></a>  <span class="src-sym">}</span></li>
<li><a name="a165"></a>  <span class="src-doc">/**</span></li>
<li><a name="a166"></a><span class="src-doc">   * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a167"></a><span class="src-doc">   */</span></li>
<li><a name="a168"></a>  <span class="src-key">function </span><span class="src-id">GetEndTag</span><span class="src-sym">(</span><span class="src-sym">)</span></li>
<li><a name="a169"></a>  <span class="src-sym">{</span></li>
<li><a name="a170"></a>    <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">EndTag</span><span class="src-sym">)</span></li>
<li><a name="a171"></a>      <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">EndTag</span><span class="src-sym">-&gt;</span><span class="src-id">Pre </span>. <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">EndTag</span><span class="src-sym">-&gt;</span><span class="src-id">GetStartTag</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a172"></a>    <span class="src-key">else</span></li>
<li><a name="a173"></a>      <span class="src-key">return </span><span class="src-str">''</span><span class="src-sym">;</span></li>
<li><a name="a174"></a>  <span class="src-sym">}</span></li>
<li><a name="a175"></a>  <span class="src-doc">/**</span></li>
<li><a name="a176"></a><span class="src-doc">   * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a177"></a><span class="src-doc">   */</span></li>
<li><a name="a178"></a><span class="src-comm">/*</span></li>
<li><a name="a179"></a><span class="src-comm">  function GenerateHtml()</span></li>
<li><a name="a180"></a><span class="src-comm">  {</span></li>
<li><a name="a181"></a><span class="src-comm">    echo $this-&gt;Pre;</span></li>
<li><a name="a182"></a><span class="src-comm">    echo $this-&gt;GetStartTag();</span></li>
<li><a name="a183"></a><span class="src-comm">    $this-&gt;EachTagDo(&quot;GenerateHtml&quot;);</span></li>
<li><a name="a184"></a><span class="src-comm">    echo $this-&gt;GetEndTag();</span></li>
<li><a name="a185"></a><span class="src-comm">  }</span></li>
<li><a name="a186"></a><span class="src-comm">*/</span></li>
<li><a name="a187"></a>  <span class="src-doc">/**</span></li>
<li><a name="a188"></a><span class="src-doc">   * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a189"></a><span class="src-doc">   */</span></li>
<li><a name="a190"></a>  <span class="src-key">function </span><span class="src-id">DumpLevel</span><span class="src-sym">(</span><span class="src-var">$inLevel</span><span class="src-sym">, </span><span class="src-var">$inIndent </span>= <span class="src-id">true</span><span class="src-sym">)</span></li>
<li><a name="a191"></a>  <span class="src-sym">{</span></li>
<li><a name="a192"></a>    <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Markup</span><span class="src-sym">)</span></li>
<li><a name="a193"></a>    <span class="src-sym">{</span></li>
<li><a name="a194"></a>      <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">EndTag</span><span class="src-sym">)</span></li>
<li><a name="a195"></a>        echo <span class="src-str">&quot;{+}&quot;</span><span class="src-sym">;</span></li>
<li><a name="a196"></a>      echo <span class="src-str">&quot;</span><span class="src-str">&lt;<span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Markup</span>&gt;&lt;<span class="src-id">br</span>&gt;</span><span class="src-str">&quot;</span><span class="src-sym">;</span></li>
<li><a name="a197"></a>    <span class="src-sym">}</span></li>
<li><a name="a198"></a>    <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Level </span>&gt;= <span class="src-var">$inLevel</span><span class="src-sym">)</span></li>
<li><a name="a199"></a>      echo <span class="src-str">&quot;[detail]&lt;br&gt;&quot;</span><span class="src-sym">;</span></li>
<li><a name="a200"></a>    <span class="src-key">else</span></li>
<li><a name="a201"></a>      <span class="src-key">for </span><span class="src-sym">(</span><span class="src-var">$i</span>=<span class="src-num">0</span><span class="src-sym">; </span><span class="src-var">$i</span>&lt;<a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Tags</span><span class="src-sym">)</span><span class="src-sym">; </span><span class="src-var">$i</span>++<span class="src-sym">)</span></li>
<li><a name="a202"></a>      <span class="src-sym">{</span></li>
<li><a name="a203"></a>        <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">EndTag</span><span class="src-sym">)</span></li>
<li><a name="a204"></a>          <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Tags</span><span class="src-sym">[</span><span class="src-var">$i</span><span class="src-sym">]</span><span class="src-sym">-&gt;</span><span class="src-id">Level </span>= <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Level </span>+ <span class="src-num">1</span><span class="src-sym">;</span></li>
<li><a name="a205"></a>        <span class="src-key">else</span></li>
<li><a name="a206"></a>          <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Tags</span><span class="src-sym">[</span><span class="src-var">$i</span><span class="src-sym">]</span><span class="src-sym">-&gt;</span><span class="src-id">Level </span>= <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Level</span><span class="src-sym">;</span></li>
<li><a name="a207"></a>        <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Tags</span><span class="src-sym">[</span><span class="src-var">$i</span><span class="src-sym">]</span><span class="src-sym">-&gt;</span><span class="src-id">DumpLevel</span><span class="src-sym">(</span><span class="src-var">$inLevel</span><span class="src-sym">, </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">EndTag </span>&lt;&gt; <span class="src-id">false</span><span class="src-sym">))</span><span class="src-sym">;</span></li>
<li><a name="a208"></a>      <span class="src-sym">}</span></li>
<li><a name="a209"></a>    <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Markup</span><span class="src-sym">)</span></li>
<li><a name="a210"></a>    <span class="src-sym">{</span></li>
<li><a name="a211"></a>      <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">EndTag</span><span class="src-sym">)</span></li>
<li><a name="a212"></a>        echo <span class="src-str">&quot;{-}&lt;br&gt;&quot;</span><span class="src-sym">;</span></li>
<li><a name="a213"></a>      <span class="src-comm">//if ($this-&gt;EndTag)</span></li>
<li><a name="a214"></a>      <span class="src-comm">//  echo &quot;&lt;&quot;.$this-&gt;EndTag-&gt;Markup.&quot;&gt;&lt;br&gt;&quot;;</span></li>
<li><a name="a215"></a>    <span class="src-sym">}</span></li>
<li><a name="a216"></a>  <span class="src-sym">}</span></li>
<li><a name="a217"></a><span class="src-sym">}</span></li>
<li><a name="a218"></a>&nbsp;</li>
<li><a name="a219"></a><span class="src-doc">/**</span></li>
<li><a name="a220"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a221"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@package</span><span class="src-doc"> TurboPhpLib</span></li>
<li><a name="a222"></a><span class="src-doc"> */</span></li>
<li><a name="a223"></a><span class="src-key">class </span><span class="src-id">TTpHtmlParser</span></li>
<li><a name="a224"></a><span class="src-sym">{</span></li>
<li><a name="a225"></a>  <span class="src-key">var </span><span class="src-var">$Count</span><span class="src-sym">;</span></li>
<li><a name="a226"></a>  <span class="src-key">var </span><span class="src-var">$I</span><span class="src-sym">;</span></li>
<li><a name="a227"></a>  <span class="src-key">var </span><span class="src-var">$PopTag</span><span class="src-sym">;</span></li>
<li><a name="a228"></a>  <span class="src-key">var </span><span class="src-var">$Root</span><span class="src-sym">;</span></li>
<li><a name="a229"></a>  <span class="src-key">var </span><span class="src-var">$Text</span><span class="src-sym">;</span></li>
<li><a name="a230"></a>&nbsp;</li>
<li><a name="a231"></a>  <span class="src-key">function </span><span class="src-id">LoadFile</span><span class="src-sym">(</span><span class="src-var">$inFilename</span><span class="src-sym">)</span></li>
<li><a name="a232"></a>  <span class="src-sym">{</span></li>
<li><a name="a233"></a>     <span class="src-var">$handle </span>= <a href="http://www.php.net/fopen">fopen</a><span class="src-sym">(</span><span class="src-var">$inFilename</span><span class="src-sym">, </span><span class="src-str">'r'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a234"></a>     <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Text </span>= <a href="http://www.php.net/fread">fread</a><span class="src-sym">(</span><span class="src-var">$handle</span><span class="src-sym">, </span><a href="http://www.php.net/filesize">filesize</a><span class="src-sym">(</span><span class="src-var">$inFilename</span><span class="src-sym">))</span><span class="src-sym">;</span></li>
<li><a name="a235"></a>     <a href="http://www.php.net/fclose">fclose</a><span class="src-sym">(</span><span class="src-var">$handle</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a236"></a>  <span class="src-sym">}</span></li>
<li><a name="a237"></a>&nbsp;</li>
<li><a name="a238"></a>  <span class="src-key">function </span><span class="src-id">NotDelimiter</span><span class="src-sym">(</span><span class="src-var">$inDelim</span><span class="src-sym">)</span></li>
<li><a name="a239"></a>  <span class="src-sym">{</span></li>
<li><a name="a240"></a>    <span class="src-key">return </span><span class="src-sym">((</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">I </span>&lt; <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Count</span><span class="src-sym">) </span>&amp;&amp; <span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Text</span><span class="src-sym">{</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">I</span><span class="src-sym">} </span>&lt;&gt; <span class="src-var">$inDelim</span><span class="src-sym">))</span><span class="src-sym">;</span></li>
<li><a name="a241"></a>  <span class="src-sym">}</span></li>
<li><a name="a242"></a>&nbsp;</li>
<li><a name="a243"></a>  <span class="src-key">function </span><span class="src-id">GetDelimited</span><span class="src-sym">(</span><span class="src-var">$inDelim</span><span class="src-sym">)</span></li>
<li><a name="a244"></a>  <span class="src-sym">{</span></li>
<li><a name="a245"></a>    <span class="src-key">while </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">NotDelimiter</span><span class="src-sym">(</span><span class="src-var">$inDelim</span><span class="src-sym">))</span></li>
<li><a name="a246"></a>    <span class="src-sym">{</span></li>
<li><a name="a247"></a>      <span class="src-comm">//echo htmlspecialchars($this-&gt;Text{$this-&gt;I});</span></li>
<li><a name="a248"></a>      <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">I</span>++<span class="src-sym">;</span></li>
<li><a name="a249"></a>    <span class="src-sym">}</span></li>
<li><a name="a250"></a>  <span class="src-sym">}</span></li>
<li><a name="a251"></a>&nbsp;</li>
<li><a name="a252"></a>  <span class="src-key">function </span><span class="src-id">GetToken</span><span class="src-sym">(</span><span class="src-var">$inDelim</span><span class="src-sym">)</span></li>
<li><a name="a253"></a>  <span class="src-sym">{</span></li>
<li><a name="a254"></a>    <span class="src-var">$s </span>= <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">I</span><span class="src-sym">;</span></li>
<li><a name="a255"></a>    <span class="src-key">while </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">NotDelimiter</span><span class="src-sym">(</span><span class="src-var">$inDelim</span><span class="src-sym">))</span></li>
<li><a name="a256"></a>    <span class="src-sym">{</span></li>
<li><a name="a257"></a>      <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">Text</span><span class="src-sym">{</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">I</span>++<span class="src-sym">} </span>== <span class="src-str">'&quot;'</span><span class="src-sym">)</span></li>
<li><a name="a258"></a>      <span class="src-sym">{</span></li>
<li><a name="a259"></a>          <span class="src-comm">//echo htmlspecialchars('[-&gt;'.$this-&gt;Text{$this-&gt;I - 1});</span></li>
<li><a name="a260"></a>          <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">GetDelimited</span><span class="src-sym">(</span><span class="src-str">'&quot;'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a261"></a>          <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-var">I</span>++<span class="src-sym">;</span></li>
<li><a name="a262"></a>          <span class="src-comm">//echo htmlspecialchars($this-&gt;Text{$this-&gt;I - 1}.'&lt;-]');</span></li>
<li><a name="a263"></a>          <span class="src-comm">//echo '&lt;br&gt;';</span></li>
<li><a name="a264"></a>      <span class="src-sym">}</span></li>
<li><a name="a265"></a>    <span class="src-sym">}</span></li>
<li><a name="a266"></a>    <span class="src-key">return </span><span class="src-id">substr</span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">Text</span><span class="src-sym">, </span><span class="src-var">$s</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">I</span>++ - <span class="src-var">$s</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a267"></a>  <span class="src-sym">}</span></li>
<li><a name="a268"></a>&nbsp;</li>
<li><a name="a269"></a>  <span class="src-key">function </span><span class="src-id">GetTag</span><span class="src-sym">(</span><span class="src-sym">&amp;</span><span class="src-var">$inTag</span><span class="src-sym">)</span></li>
<li><a name="a270"></a>  <span class="src-sym">{</span></li>
<li><a name="a271"></a>    <span class="src-var">$inTag</span><span class="src-sym">-&gt;</span><span class="src-id">Pre </span>= <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">GetToken</span><span class="src-sym">(</span><span class="src-str">'&lt;'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a272"></a>    <span class="src-var">$inTag</span><span class="src-sym">-&gt;</span><span class="src-id">Markup </span>= <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">GetToken</span><span class="src-sym">(</span><span class="src-str">'&gt;'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a273"></a>    <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$inTag</span><span class="src-sym">-&gt;</span><span class="src-id">Markup</span><span class="src-sym">)</span></li>
<li><a name="a274"></a>      <span class="src-var">$inTag</span><span class="src-sym">-&gt;</span><span class="src-id">Parse</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a275"></a>  <span class="src-sym">}</span></li>
<li><a name="a276"></a>&nbsp;</li>
<li><a name="a277"></a>  <span class="src-key">function </span><span class="src-sym">&amp;</span><span class="src-id">ManufactureObject</span><span class="src-sym">(</span><span class="src-sym">&amp;</span><span class="src-var">$inTag</span><span class="src-sym">)</span></li>
<li><a name="a278"></a>  <span class="src-sym">{</span></li>
<li><a name="a279"></a>    <span class="src-key">return </span><span class="src-var">$inTag</span><span class="src-sym">;</span></li>
<li><a name="a280"></a>  <span class="src-sym">}</span></li>
<li><a name="a281"></a>&nbsp;</li>
<li><a name="a282"></a>  <span class="src-key">function </span><span class="src-id">MatchTag</span><span class="src-sym">(</span><span class="src-sym">&amp;</span><span class="src-var">$inTag</span><span class="src-sym">)</span></li>
<li><a name="a283"></a>  <span class="src-sym">{</span></li>
<li><a name="a284"></a>    <span class="src-comm">//$s = '';</span></li>
<li><a name="a285"></a>    <span class="src-key">while </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">I </span>&lt; <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">Count</span><span class="src-sym">)</span></li>
<li><a name="a286"></a>    <span class="src-sym">{</span></li>
<li><a name="a287"></a>      <span class="src-var">$tag </span>= <span class="src-key">new </span><span class="src-id">TTpTag</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a288"></a>      <span class="src-var">$tag</span><span class="src-sym">-&gt;</span><span class="src-id">Level </span>= <span class="src-var">$inTag</span><span class="src-sym">-&gt;</span><span class="src-id">Level </span>+ <span class="src-num">1</span><span class="src-sym">;</span></li>
<li><a name="a289"></a>      <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">GetTag</span><span class="src-sym">(</span><span class="src-sym">&amp;</span><span class="src-var">$tag</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a290"></a>      <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$tag</span><span class="src-sym">-&gt;</span><span class="src-id">IsEnd</span><span class="src-sym">)</span></li>
<li><a name="a291"></a>      <span class="src-sym">{</span></li>
<li><a name="a292"></a>        <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$tag</span><span class="src-sym">-&gt;</span><span class="src-id">Element </span>== <span class="src-var">$inTag</span><span class="src-sym">-&gt;</span><span class="src-id">Element</span><span class="src-sym">)</span></li>
<li><a name="a293"></a>        <span class="src-sym">{</span></li>
<li><a name="a294"></a>          <span class="src-var">$inTag</span><span class="src-sym">-&gt;</span><span class="src-id">EndTag </span>= <span class="src-sym">&amp;</span><span class="src-var">$tag</span><span class="src-sym">;</span></li>
<li><a name="a295"></a>          <span class="src-comm">//$s .= &quot;ending [$inTag-&gt;Level: $inTag-&gt;Element] with [/&quot; . $inTag-&gt;EndTag-&gt;Level . &quot;: &quot; . $inTag-&gt;EndTag-&gt;Element .&quot;]...&lt;br&gt;&quot;;</span></li>
<li><a name="a296"></a>        <span class="src-sym">}</span></li>
<li><a name="a297"></a>        <span class="src-key">else</span></li>
<li><a name="a298"></a>        <span class="src-sym">{</span></li>
<li><a name="a299"></a>          <span class="src-comm">//$s .= &quot;looking for [/$inTag-&gt;Level: $inTag-&gt;Element] found [/$tag-&gt;Level: $tag-&gt;Element]...POP&lt;br&gt;&quot;;</span></li>
<li><a name="a300"></a>          <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">PopTag </span>= <span class="src-sym">&amp;</span><span class="src-var">$tag</span><span class="src-sym">;</span></li>
<li><a name="a301"></a>        <span class="src-sym">}</span></li>
<li><a name="a302"></a>        <span class="src-comm">//return $s;</span></li>
<li><a name="a303"></a>        <span class="src-key">return</span><span class="src-sym">;</span></li>
<li><a name="a304"></a>      <span class="src-sym">}</span></li>
<li><a name="a305"></a>      <span class="src-key">else</span></li>
<li><a name="a306"></a>      <span class="src-sym">{</span></li>
<li><a name="a307"></a>        <span class="src-comm">//$obj = $this-&gt;ManufactureObject(&amp;$tag);</span></li>
<li><a name="a308"></a>        <span class="src-var">$obj </span>= <span class="src-sym">&amp;</span><span class="src-var">$tag</span><span class="src-sym">;</span></li>
<li><a name="a309"></a>        <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$obj </span>!= <span class="src-id">NULL</span><span class="src-sym">)</span></li>
<li><a name="a310"></a>        <span class="src-sym">{</span></li>
<li><a name="a311"></a>          <span class="src-comm">//echo &quot;looking for [/$inTag-&gt;Level: $inTag-&gt;Element] found [$tag-&gt;Level: $tag-&gt;Element]...&lt;br&gt;&quot;;</span></li>
<li><a name="a312"></a>          <span class="src-comm">//echo &quot;adding [$tag-&gt;Level: $tag-&gt;Element] to [$inTag-&gt;Level: $inTag-&gt;Element]...&lt;br&gt;&quot;;</span></li>
<li><a name="a313"></a>          <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">MatchTag</span><span class="src-sym">(</span><span class="src-sym">&amp;</span><span class="src-var">$obj</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a314"></a>          <span class="src-var">$inTag</span><span class="src-sym">-&gt;</span><span class="src-id">Tags</span><span class="src-sym">[</span><span class="src-sym">] </span>= <span class="src-var">$obj</span><span class="src-sym">;</span></li>
<li><a name="a315"></a>          <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">PopTag</span><span class="src-sym">)</span></li>
<li><a name="a316"></a>          <span class="src-sym">{</span></li>
<li><a name="a317"></a>            <span class="src-comm">//$s .= &quot;comparing [/$inTag-&gt;Element] and [/&quot; . $this-&gt;PopTag-&gt;Element . &quot;]...&lt;br&gt;&quot;;</span></li>
<li><a name="a318"></a>            <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$inTag</span><span class="src-sym">-&gt;</span><span class="src-id">Element </span>== <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">PopTag</span><span class="src-sym">-&gt;</span><span class="src-id">Element</span><span class="src-sym">)</span></li>
<li><a name="a319"></a>            <span class="src-sym">{</span></li>
<li><a name="a320"></a>              <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">PopTag</span><span class="src-sym">-&gt;</span><span class="src-id">Level </span>= <span class="src-var">$inTag</span><span class="src-sym">-&gt;</span><span class="src-id">Level </span>+ <span class="src-num">1</span><span class="src-sym">;</span></li>
<li><a name="a321"></a>              <span class="src-var">$inTag</span><span class="src-sym">-&gt;</span><span class="src-id">EndTag </span>= <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">PopTag</span><span class="src-sym">;</span></li>
<li><a name="a322"></a>              <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">PopTag </span>= <span class="src-id">false</span><span class="src-sym">;</span></li>
<li><a name="a323"></a>              <span class="src-comm">//$s .= &quot;ending [$inTag-&gt;Level: $inTag-&gt;Element] with [/&quot; . $inTag-&gt;EndTag-&gt;Level . &quot;: &quot; . $inTag-&gt;EndTag-&gt;Element .&quot;]...&lt;br&gt;&quot;;</span></li>
<li><a name="a324"></a>            <span class="src-sym">}</span></li>
<li><a name="a325"></a>            <span class="src-comm">//else $s .= &quot;POP&lt;br&gt;&quot;;</span></li>
<li><a name="a326"></a>            <span class="src-comm">//return $s;</span></li>
<li><a name="a327"></a>            <span class="src-key">return</span><span class="src-sym">;</span></li>
<li><a name="a328"></a>          <span class="src-sym">}</span></li>
<li><a name="a329"></a>        <span class="src-sym">}</span></li>
<li><a name="a330"></a>      <span class="src-sym">}</span></li>
<li><a name="a331"></a>    <span class="src-sym">}</span></li>
<li><a name="a332"></a><span class="src-comm">//    return $s;</span></li>
<li><a name="a333"></a>  <span class="src-sym">}</span></li>
<li><a name="a334"></a>&nbsp;</li>
<li><a name="a335"></a>  <span class="src-key">function </span><span class="src-id">Parse</span><span class="src-sym">(</span><span class="src-sym">)</span></li>
<li><a name="a336"></a>  <span class="src-sym">{</span></li>
<li><a name="a337"></a>    <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">I </span>= <span class="src-num">0</span><span class="src-sym">;</span></li>
<li><a name="a338"></a>    <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">Root </span>= <span class="src-key">new </span><span class="src-id">TTpTag</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a339"></a>    <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">Count </span>= <a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">Text</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a340"></a>    <span class="src-comm">//echo $this-&gt;MatchTag($this-&gt;Root);</span></li>
<li><a name="a341"></a>    <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">MatchTag</span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">Root</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a342"></a>  <span class="src-sym">}</span></li>
<li><a name="a343"></a>&nbsp;</li>
<li><a name="a344"></a>  <span class="src-key">function </span><span class="src-id">ParseFile</span><span class="src-sym">(</span><span class="src-var">$inFilename</span><span class="src-sym">)</span></li>
<li><a name="a345"></a>  <span class="src-sym">{</span></li>
<li><a name="a346"></a>    <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">LoadFile</span><span class="src-sym">(</span><span class="src-var">$inFilename</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a347"></a>    <span class="src-var">$this</span><span class="src-sym">-&gt;</span><span class="src-id">Parse</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a348"></a>  <span class="src-sym">}</span></li>
<li><a name="a349"></a><span class="src-sym">}</span></li>
<li><a name="a350"></a>&nbsp;</li>
<li><a name="a351"></a><span class="src-php">?&gt;</span></li>
</ol></pre>
</div>
	<p class="notes" id="credit">
		Documentation generated on Sun, 16 Jan 2005 21:19:17 +0000 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
	</p>
	</body>
</html>